Pike on Windows

[ Start > PikeDevel > Pike on Windows ] [ Edit this Page | Show Page Versions | Show Formatted ]


Starting with version 7.7, Pike can be compiled directly on Windows. This technique uses MinGW and MSYS to produce a native Windows binary (ie there's no POSIX compatibility layer as with CygWin).

This technique seems to work, however there are some issues currently. The most serious of these seems to be the lack of working dynamic modules.


 A more promising technique is to use the freely available Microsoft Visual C++ Toolkit, which contains the "cl" command line compiler, and the Microsoft Platform SDK, which contains all of the necessary headers and libraries. Unfortunately certain functionality that the windows build of Pike relies on has been removed from this newest release of VC++, so for now, we're stuck using VC++ 6.0.

Install Pike for Windows, MinGW and MSYS. Also install bison for Windows and make sure it is in your PATH.

We then use rnctl, a pike script which converts gcc command line options into cl command line options.

You'll need the following in $HOME/nt-tools/tools:

- rntcl
- ar
- pntld
- ranlib

{code}
PATH=/c/progra~1/micros~3/vc98/bin:$HOME/nt-tools/tools:/c/progra~1/Pike:$PATH
export PATH
LDFLAGS="-LC:/Progra~1/micros~3/vc98/lib -LC:/Progra~1/thirdpartylibs/lib"
export LDFLAGS
CPPFLAGS="-IC:/Progra~1/micros~3/vc98/include -IC:/Progra~1/thirdpartylibs/include"
export CPPFLAGS
INCLUDE=C:\\Program\ Files\\Microsoft\ Visual\ Studio\\VC98\\include
LIB=C:\\Program\ Files\\Microsoft\ Visual\ Studio\\VC98\\lib
export INCLUDE LIB

NTTOOLS=$HOME/nt-tools/tools/lib CC=rntcl make

{code}

snprintf is _snprintf, the fix for the LARGE_INTEGER casting in fdlib.c (LARGE_INTEGER is a struct, and you can't cast an int64 to a struct) is:

LARGE_INTEGER li;


li.QuadValue = pos;


The general procedure:

{code}
install a standard windows build of pike.

download a snapshot of pike from 7.7 cvs


compile gmp as usual:

cd to bundles
untar gmp
./configure
make
make install

compile nettle:

cd to bundles
untar nettle-1.12.tar.gz
untar nettle-1.12.ptar.gz

set env variables:

CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
export CFLAGS LDFLAGS

compile nettle:

./configure --disable-assembler
make
make install


compile pike 7.7:

./configure
make 
make install
{code}

Powered by PikeWiki2

 
gotpike.org | Copyright © 2004 - 2009 | Pike is a trademark of Department of Computer and Information Science, Linköping University